更新时间:2022-03-24 00:55
MMX 是MultiMedia eXtensions(多媒体扩展)的缩写,是第六代CPU芯片的重要特点。MMX技术是在CPU中加入了特地为视频信号(Video Signal),音频信号(Audio Signal)以及图像处理(Graphical Manipulation)而设计的57条指令,因此,MMX CPU极大地提高了电脑的多媒体(如立体声、视频、三维动画等)处理功能。
MMX技术是继Intel386(TM)处理器(将体系结构扩展至32位)之后对Intel体系结构的最重要的加强。这些指令集能够加速处理有关图形、影像、声音等的应用,MMX 加强了在多媒体处理功能的不足,它可以利用其内建的多媒体指令来模拟3D绘图的处理、 MPEG的压缩/解压缩。立体声的音效等,只要是软件支持MMX CPU,即可以取代这些硬件的接口而达到多媒体的功效。
MMX技术的基础是一项称为单指令、多数据(SIMD)的技术。它使得许多条信息可由一条单一指令来处理,这种平行操作使性能得以大幅度地提高。MMX技术被集成到Intel体系结构的处理器中,同时保持了与现有操作系统(如MS DOS,Windows3.1,Windows95,OS/2及UNIX)的充分兼容。除此之外,所有Intel体系结构的软件将能够在采用MMX技术的系统中运行。
MMX的另一个特征是在计算结果超过实际处理能力的时候也能进行正常处理。若用传统的X86指令,计算结果一旦超出了CPU处理数据的限度,数据就要被截掉,而变成较小的数。MMX利用所谓的“饱和(Saturation)”功能,圆满的解决了这一问题。
除了指令集中增加MMX指令(多媒体增强指令集)外,还将CPU芯片内的L1缓存由原来的16KB增加到32KB(16K指令+16K数据),因此MMX CPU比普通CPU在运行含有MMX指令的程序时,处理多媒体的能力上提高了60%左右。目前CPU基本都具备MMX技术,除P55C和Pentium ⅡCPU还有K6、K6 3D、MII等。
由于MMX的运算指令必须在数据配对整齐的时候才能使用,所以使用MMX指令要比普通的汇编指令多余许多分组配对的指令,如果运算不是特别的整齐的话,就要浪费大量的时间在数据的配对上,所以说MMX指令也不是万能的,也有其很大的缺陷。同时MMX指令在处理16位数据的时候才能发挥最大的作用,处理8位数据要有一点技巧。而处理32位数据,MMX指令几乎没有什么加速能力。(考虑分组耗时)
拷贝指令
movq:64位数据拷贝,如果内存8位对齐的话,是一个64位写,否则2个32位写。
movd:32位数据拷贝,注意:如果从内存向MMX寄存器拷贝,MMX高32位清零!
分组指令
分组指令是MMX特有的,所以对于它我们要特别的关注。分组指令基本上可以分为2类,一类是不带符号紧缩的,一类是带符号紧缩的。现在我们分别予以介绍:
①punpcklbw / punpcklwd / punpckldq (l表示低位分组,bw8位,wd16位,dq32位):它是简单的将两个MMX寄存器的低32位交错组合为一个64位数据。所以它是不能将长数据转换为短数据的。
②packuswb 将16位数据转换为无符号的8位数据。所以可以将两个MMX寄存器不交错的合为一个64位数据。
③packsswb/packssdw 将32位-》16位,16位-》8位,都是有符号的数据。
运算指令
加法运算指令:paddb(w)(d):没有越界保护的加法,当越界的时候仅仅丢弃超出范围的高位比特,(b)(w)(d)分别为8,16,32位加法;paddsb(w):具有越界保护的有符号加法,当上溢的时候为0x7fff,下溢的时候为0x8000;paddusb(w):具有越界保护的无符号加法,当上溢的时候为0x7fff,下溢的时候为0x0。
减法运算指令同上;add改为sub。
乘法指令:pmullw / pmulhw 是4个16位数据的乘法,pmullw中是结果的低16位,pmulhw是结果的高16位。pmaddwd 乘加指令。
还有一个MMX的含意:(Matrix Math eXtensions)矩阵数学扩展。
罗马数字中“MMX”表示“2010”。
在红色警戒的游戏中“MMX”扩展名的文件表示能被红色警戒2和尤里的复仇都能识别的地图文件。